#include <iostream>
#include <future>
#include <chrono>

// 通过在线程中对promise对象设置数据，其他线程中通过future获取设置数据的方式实现获取异步任务执行结果的功能
void Add(int x, int y, std::promise<int> &prom)
{
    prom.set_value(x + y);
    std::this_thread::sleep_for(std::chrono::seconds(3));
}

int main()
{
    std::promise<int> prom;
    std::future<int> fu = prom.get_future();

    std::thread thr(Add, 1, 2, std::ref(prom));
    
    int result = fu.get();
    std::cout << result << std::endl;

    thr.join();

    return 0;
}